home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / dev / misc / gms_e.lha / GMSDev / Source / E / Demos / IntMandel.e < prev    next >
Text File  |  1997-09-15  |  2KB  |  88 lines

  1. /* This is a Mandel generator from the Amiga E archive (which was converted
  2. ** from Oberon) and is now converted to work with GMS.
  3. */
  4.  
  5. MODULE 'dpkernel','gms/dpkernel','graphics/pictures','files/files'
  6. MODULE 'screens','system/register','system/modules','gms/joydata'
  7. MODULE 'graphics/screens','blitter'
  8.  
  9. CONST ITERDEPTH = 50   /* This constant defines the detail of the mandel */
  10.  
  11. PROC main()
  12.  DEF screen=NIL:PTR TO screen, zr, zi, ar, ai, dr, di, sr, si, st, x, y, i
  13.  DEF joy=NIL:PTR TO joydata, scrmodule=NIL:PTR TO module
  14.  DEF bltmodule=NIL:PTR TO module
  15.  
  16.  IF dpkbase := OpenLibrary('GMS:libs/dpkernel.library',0)
  17.   SetUserPrefs(0)
  18.  
  19.   IF (scrmodule := Init([TAGS_MODULE,NIL,
  20.       MODA_NUMBER,    MOD_SCREENS,
  21.       MODA_TABLETYPE, JMP_AMIGAE,
  22.       TAGEND], NIL))
  23.       scrbase := scrmodule.modbase
  24.  
  25.   IF (bltmodule := Init([TAGS_MODULE,NIL,
  26.       MODA_NUMBER,    MOD_BLITTER,
  27.       MODA_TABLETYPE, JMP_AMIGAE,
  28.       TAGEND], NIL))
  29.       bltbase := bltmodule.modbase
  30.  
  31.   IF (screen := Init([TAGS_SCREEN,NIL,
  32.        GSA_SCRWIDTH,   640,
  33.        GSA_SCRHEIGHT,  512,
  34.        GSA_AMTCOLOURS, 16,
  35.        GSA_SCRMODE,    HIRES OR LACED,
  36.        TAGEND],NIL))
  37.  
  38.    x := 256/screen.amtcolours*2
  39.    FOR i:=0 TO screen.amtcolours-1 DO UpdateColour(screen,i,(Shl(i*x,8) OR (i*x)))
  40.  
  41.    sr := $400000/screen.scrwidth  -> shrink horiz
  42.    si := $300000/screen.scrheight -> shrink vert
  43.    st := $140000*-2               -> move side
  44.    zi := $160000                  -> move up
  45.  
  46.    IF (joy := Init(Get(ID_JOYDATA),NIL))
  47.  
  48.     Display(screen)
  49.  
  50.     FOR y:=screen.scrheight-1 TO 0 STEP -1
  51.       Query(joy)
  52.       IF (joy.buttons AND JD_LMB) THEN JUMP end
  53.       zi := zi-si
  54.       zr := st
  55.       FOR x:=0 TO screen.scrwidth-1
  56.         i := 0
  57.         ar := zr
  58.         ai := zi
  59.         REPEAT
  60.           dr := Shr(ar,10)
  61.           di := Shr(ai,10)
  62.           ai := dr*2*di+zi
  63.           dr := dr*dr
  64.           di := di*di
  65.           ar := dr-di+zr
  66.           i++
  67.         UNTIL (i>ITERDEPTH) OR (dr+di>$400000)
  68.         DrawPixel(screen.bitmap, x, y, Mod(i, screen.amtcolours))
  69.         zr:=zr+sr
  70.       ENDFOR
  71.       AutoSwitch()
  72.     ENDFOR
  73.     WaitLMB()
  74.  
  75. end:
  76.    ENDIF
  77.   ENDIF
  78.   ENDIF
  79.   ENDIF
  80.  Free(joy)
  81.  Free(screen)        
  82.  Free(scrmodule)
  83.  Free(bltmodule)
  84.  CloseDPK()
  85.  ENDIF
  86. ENDPROC
  87.  
  88.